Predict Earthquake Damage to Building in Nepal

Reynara Ezra Pratama

Background

earthquake-Map-Nepal-region-temblor-thousands-people-April-25-2015.jpg

Source : Britanica

Pada tanggal 25 April 2015, terjadi gempa bumi berkekuatan 7,8 Skala Richter di Nepal. Pasca kejadian tersebut, dilakukan banyak penelitian dan penyelidikan di lapangan untuk melihat kerusakan yang terjadi pada bangunan yang terkena dampak dari gempa bumi tersebut. Dikarenakan jumlah bangunan dan variasi bangunan yang sangat banyak, proses penyelidikan pasca gempa menjadi sulit untuk dilakukan. Namun, dengan mengetahui deskripsi dari suatu bangunan, dapat membantu kita dalam menentukan tingkat kerusakan yang ada pada bangunan tersebut.

Data dikumpulkan melalui survei oleh Kathmadu Living Labs dan Central Bureau of Statistics yang bekerja di bawah Sekretariat Komisi Perencanaan Nasional Nepal. Survei ini merupakan salah satu kumpulan data pascabencana terbesar yang pernah dikumpulkan, yang berisi informasi berharga tentang dampak gempa bumi, kondisi rumah tangga, dan statistik sosio-ekonomi-demografis.

Adapun dataset pada permasalahan ini dapat dilihat pada Earthquake Nepal 2015

Business Understanding

  1. Mendapatkan gambaran bagaimana kerusakan yang ada pada bangunan yang ada di Nepal
  2. Memberikan rekomendasi berupa material atau karakteristik spesifik yang dapat digunakan dalam membangun suatu bangunan untuk mengurangi dampak kerusakan yang ditimbulkan dari gempa bumi.
  3. Memprediksi level kerusakan bangunan yang terkena dampak gempa bumi Nepal 2015.

Importing Library

Loading Dataset

Load Data from github

Load Data from local file

Checking Data

Pertama, kita akan mengecek ukuran dari data kita menggunakan attribut .shape

Terlihat bahwa terdapat 260601 baris pada Training Data dan 86868 baris pada Testing Data sehingga jumlah data yang kita miliki sebesar 347469 baris.

Akan dilihat 5 data teratas pada train_label, train_value, dan test_value menggunakan method .head().

Description

Penjelasan Label

Pada permasalahan ini, kita akan memprediksi variabel ordinal damage_grade, yang merepresentasikan level kerusakan dari suatu bangunan yang terdampak gempa bumi. Terdapat 3 buah level kerusakan yaitu :

Penjelasan Feature '

Pada feature memuat data tentang struktur bangunan dan kepemilikan legal dari bangunan tersebut. Setiap baris pada data tersebut menunjukkan suatu bangunan tertentu di wilayah yang terkena gempa. Terdapat 39 kolom pada dataset, dimana kolom building_id adalah unik dan sebagai pengenal. Pada dataset, munculnya karakter yang sama pada kolom yang berbeda tidak menunjuk pada nilai asli yang sama. Adapun penjalasan dari 38 feature lainnya adalah :

Data Preparation

Merge feature and label on training data

Karena data pada training data kita masih terpisah pada train_value dan train_label, kita perlu menggabungkan dua data tersebut menggunakan pd.merge() yang secara otomatis akan menggabungkan berdasarkan kolom building_id.

Check the top 5 data, bottom 5 data, and 5 random data

Check Null and Duplicate Data

Untuk melihat apakah terdapat data yang kosong, kita dapat menggunakan isnull() dan .sum() untuk melihat apakah terdapat data kosong pada tiap kolom training data.

Tidak ada data yang kosong

Tidak ada data yang kembar pada kolom building_id

Training Data Columns and Info

Terdapat 32 kolom pada data yang bertipe integer dan 8 kolom yang bertipe object.

Kolom Tipe Numerik

Kolom Tipe Kategorikal

Summary Data

Berdasarkan statistika deskriptif di atas, terlihat untuk rataan jumlah lantai bangunan adalah 2 lantai. Rata-rata umur bangunan adalah 26.53 tahun dan memiliki bangunan yang berumur sangat tua yaitu 995 tahun. Bangunan yang sangat tua ini dapat memengaruhi nilai rataan umur bangunan. Untuk rataan luas dan tinggi bangunan yaitu 8.01 $m^2$ untuk luas bangunan dan 5.43 $m$ untuk tinggi bangunan.

Exploratory Data Analysis

Plot Label Data

Berdasarkan gambar di atas, terlihat bahwa jumlah bangunan dengan tingkat kerusakan menengah adalah yang paling banyak yaitu sebesar 56.89% diikuti oleh bangunan dengan tingkat kerusakan tinggi sebesar 33.47% dan terakhir bangunan dengan tingkat kerusakan rendah sebesar 9.64%.

Check Between Feature and Label

Univariate Analysis

Geo Level and Damage Grade

Berdasarkan gambar di atas, bangunan yang berada pada tingkat geografis level 1 memiliki tingkat kerusakan rendah, menengah, dan tinggi. Pada tingkat geografis 1, sebanyak 75% bangunan yang mengalami tingkat kerusakan rendah berada pada tingkat geografis level 1 pada nilai 9 hingga 26, nilai 6 hingga 21 untuk tingkat kerusakan menengah, dan nilai 8 hingga 18 untuk tingkat kerusakan tinggi. Dikarenakan tingkat geografis level 1 adalah yang paling luas dibandingkan tingkat geografis yang lain, terlihat bahwa bangunan yang berada pada tingkat geografis level 1 pada nilai 8 hingga 18 lebih mengalami kerusakan dibandingkan pada nilai lainnya.

Berdasarkan gambar di atas, bangunan yang berada pada tingkat geografis level 2 memiliki tingkat kerusakan rendah, menengah, dan tinggi. Pada tingkat geografis 2, sebanyak 75% bangunan yang mengalami tingkat kerusakan rendah berada pada tingkat geografis level 2 pada nilai 200 hingga 1100, nilai 350 hingga 1100 untuk tingkat kerusakan menengah, dan nilai 350 hingga 1100 untuk tingkat kerusakan tinggi. Dikarenakan tingkat geografis level 2 adalah tingkat geografis yang lebih sempit dibandingkan tingkat geografis 1, terlihat bahwa persebaran kerusaan bangunan yang berada pada tingkat geografis level 2 lebih mirip untuk ketiga tingkat kerusakan.

Berdasarkan gambar di atas, bangunan yang berada pada tingkat geografis level 2 memiliki tingkat kerusakan rendah, menengah, dan tinggi. Dikarenakan tingkat geografis level 3 adalah tingkat geografis yang lebih sempit dibandingkan tingkat geografis lainnya, bangunan pada tingkat geografis 3 memiliki tingkat kerusakan yang hampir sama pada semua nilainya.

Number of Floor and Damage Grade

Bangunan di Nepal yang mengalami kerusakan akibat gempa mempunyai jumlah lantai yang beragam dimulai dari bangunan dengan 1 lantai hingga 9 lantai. Adapun 3 jenis bangunan berdasarkan jumlah lantainya adalah bangunan 2 lantai, kemudian diikuti dengan 3 lantai dan 1 lantai. Diamati bahwa untuk bangunan yang memiliki 2 lantai mangalami tingkat kerusakan menengah, kemudian diikuti dengan tingkat kerusakan tinggi dan tingkat kerusakan rendah. Hal ini juga berlaku untuk bangunan yang memiliki 3 lantai dan 1 lantai.

Age and Damage Grade

Pada gambar di atas, terlihat bahwa persebaran umur bangunan adalah pada rentang 0-200 tahun kemudian dilanjut dengan umur bangunan lebih dari 950 tahun. Oleh karena itu, akan dibagi plot di atas ke dalam 4 buah segmen yaitu pada range 0-50 tahun, 51-100 tahun, 101-150 tahun, dan lebih dari 150 tahun.

Segment 1 (0 to 50 years old building)

Berdasarkan gambar di atas, terlihat bahwa pada umur bangunan antara 0 hingga 50 tahun, tingkat kerusakan bangunan paling banyak adalah tingkat kerusakan sedang. Pada umur bangunan antara 0 hingga 40 tahun terlihat bangunan dengan tingkat kerusakan ringan mengalami penurunan.

Segment 2 (51 to 100 years old building)

Berdasarkan gambar di atas, terlihat bahwa pada umur bangunan antara 51 hingga 100 tahun, tingkat kerusakan bangunan paling banyak adalah tingkat kerusakan sedang. Pada umur bangunan antara 51 hingga 100, hanya ada sedikit bangunan yang mengalami tingkat kerusakan ringan.

Segment 3 (101 to 150 years old building)

Beberapa bangunan yang mempunyai umur antara 101 hingga 150 tahun mengalami tingkat kerusakan yang didominasi tingkat kerusakan mengengah dan tinggi.

Segment 4 (150 to 1000 years old building)

Berdasarkan gambar di atas, terdapat bangunan yang mempunyai umur lebih dari 200 tahun dan mengalami tingkat kerusakan baik itu rendah, menengah, dan tinggi. Terdapat bangunan yang mempunyai umur sangat tua yaitu 995 tahun dan banyak diantaranya yang mengalami tingkat kerusakan menengah.

Area Percentage and Damage Grade

Terlihat bahwa banyak bangunan yang ada di Nepal memiliki luas area atau area percentage dari 1 hingga 20 $m^2$ dan mayoritas mengalami tingkat kerusakan menengah akibat gempa.

Height Percentage and Damage Grade

Untuk tinggi bangunan sendiri berada pada rentang 2 hingga 10 $m$ dan mengalami tingkat kerusakan menengah akibat gempa.

Count Families and Damage Grade

Mayoritas bangunan di Nepal yang terkena dampak dari gempa bumi dihuni oleh 0-2 orang. Untuk bangunan dengan 0 orang menyatakan bahwa bangunan tersebut bukanlah bangunan pribadi melainkan fasilitas umum yang tidak ditinggali untuk kehidupan sehari-hari.

Categorical Feature and Damage Grade

Land Surface Condition and Damage Grade

Berdasarkan gambar di atas, bangunan yang ada di nepal mempunyai kondisi permukaan tanah bangunan t dan permukaan tanah ini memiliki pengaruh terhadap tingkat kerusakan yang terjadi pada bangunan.

Foundation Type and Damage Grade

Berdasarkan gambar di atas, bangunan dengan tipe pondasi r memiliki jumlah terbanyak dan memiliki pengaruh terhadap tingkat kerusakan yang terjadi pada bangunan.

Roof Type and Damage Grade

Ground Floor Type and Damage Grade

Bangunan dengan jenis lantai yang digunakan pada lantai dasar bangunan bertipe f memiliki jumlah terbanyak dan memiliki pengaruh terhadap tingkat kerusakan yang terjadi pada bangunan.

Other Floor Type and Damage Grade

Bangunan dengan jenis lantai yang digunakan pada lantai lain banyak menggunakan lantai bertipe q dan mayoritas diantaranya mengalami tingkat kerusakan menengah dan tinggi.

Position and Damage Grade

Bangunan yang berada di Nepal kebanyakan menggunakan posisi bertipe s dan mayoritas mengalami tingkat kerusakan menengah akibat gempa.

Plan Configuration and Damage Grade

Plan configuration yang ada pada bangunan di Nepal didominasi d dan banyak diantaranya yang mengalami tingkat kerusakan menengah.

Legal Ownership Status

Status kepemilikan bangunan didominasi oleh v dan banyak diantaranya yang mengalami tingkat kerusakan menengah.

Numerical Feature (Binary) and Damage Grade

Has Superstructure Adobe Mud

Has Superstructure Mud Mortar Stone

Has Superstructure Stone Flag

Has Superstructure Cement Mortar Stone

Has Superstructure Mud Mortar Brick

Has Superstructure Cement Mortar Brick

Has Superstructure Timber

Has Superstructure Bamboo

Has Superstructure RC Non Engineered

Has Superstructure RC Engineered

Has Superstructure Other

Pada bangunan yang ada di Nepal, superstruktur yang banyak digunakan pada bangunan adalah superstruktur campuran antara Mud Mortar Stone atau superstruktur dari Timber. Pada bangunan yang menggunakan superstruktur tersebut kebanyakan mengalami tingkat kerusakan menengah kemudian disusul dengna tingkat kerusakan tinggi.

Has Secondary Use

Has Secondary Use Agriculture

Has Secondary Use Hotel

Has Secondary Use Rental

Has Secondary Use Institution

Has Secondary Use School

Has Secondary User Industry

Has Secondary Use Health Post

Has Secondary Use Goverment Office

Has Secondary Use Police

Has Secondary Use Other

Selain bangunan untuk tujuan pribadi, banyak bangunan di Nepal yang digunakan untuk tujuan pertanian, hotel, penyewaan, institusi, sekolah, pos kesehatan, kantor pemerintahan, kantor polisi, dan tujuan lainnya. Bangunan yang mempunyai tujuan sekunder sebagai sarana pertanian dan hotel merupakan dua sektor dengan jumlah bangunan terbanyak dibandingkan dengan bangunan dengan tujuan sekunder lain. Kebanyakan bangunan dengan tujuan sekunder pertanian dan hotel mengalami tingkat kerusakan menengah.

Facetgrid

Superstructure RC, non RC, Mud Mortar Stone, Mud Mortar Brick, Cement Mortar Brick and Number of Floor

Superstructure RC, non RC, Mud Mortar Stone, Mud Mortar Brick, Cement Mortar Brick and Height Percentage

Superstructure RC, non RC, Mud Mortar Stone, Mud Mortar Brick, Cement Mortar Brick and Area Percentage

Multivariate Analysis

EDA (Recommendation Material and Characteristic)

Recommendation Material

Definisikan features yang termasuk ke dalam kategori material adalah

Berdasarkan gambar dari pengaruh features material bangunan terhadap tingkat kerusakan bangunan, kita akan memilih 4 features material yang memiliki tingkat korelasi tertinggi dengan damage_grade. 4 features tersebut adalah has_superstructure_mud_mortar_stone, has_superstructure_cement_mortar_brick, has_superstructure_rc_engineered, dan has_superstructure_rc_non_engineered. Diperoleh beberapa insight berdasarkan data pada proses EDA sebelumnya yaitu.

Maka dari itu kita dapat memberikan rekomendasi karakteristik bangunan (rumah) dengan ciri-ciri sebagai berikut.

Recommendation Characteristic

Definisikan features yang termasuk ke dalam kategori karakteristik adalah

Berdasarkan gambar dari pengaruh features karakteristik bangunan terhadap tingkat kerusakan bangunan, diperoleh bangunan yang mengalami tingkat kerusakan terbanyak adalah bangunan dengan kriteria sebagai berikut.

Maka dari itu kita dapat memberikan rekomendasi karakteristik bangunan (rumah) dengan ciri-ciri sebagai berikut.

Feature Selection

Pisahkan Feature Numerik dan Kategorikal

Feature Selection Untuk Feature Numerik

Pada matrik korelasi sebelumnya terlihat bahwa terdapat dua buah feature yang memiliki tingkat korelasi yang tinggi (>0.7). Penggunakan matrik korelasi dapat dilakukan untuk mengecek multicollinearity. Multicollinearity dapat menimbulkan masalah seperti redudansi dimana dua feature tersebut dapat menyimpan informasi yang serupa/mirip. Dalam mengatasi multicollinearity, kita dapat membuang dua buah feature tersebut atau salah satu agar tidak ada feature yang mempunyai tingkat korelasi yang tinggi dengan feature lain. Akan dicek antara feature height_percentage dan has_secondary_use_agriculture yang mempunyai tingkat korelasi lebih tinggi terhadap target damage_grade.

Berdasarkan nilai korelasi di atas, terlihat bahwa feature height_percentage mempunyai tingkat korelasi yang lebih tinggi, maka kita akan membuang feature has_secondary_use_agriculture.

Feature Selection Untuk Feature Kategorikal

Proses pemilihan feature yang bertipe kategorikal akan menggunakan SelectKBest. Menggunakan hal ini, digunakan metrics chi squared yang mana jika chi squared semakin tinggi, maka semakin signifikan pengaruh dari feature tersebut.

Merge Feature Numerik dan Kategorikal

Split Data into Train Data and Validation Data

Pisahkan data yang akan digunakan sebagai label atau target variabel dengan feature lainnya. Dalam kasus ini kita membuat variabel y yang menyimpan target variabel dan X yang menyimpan feature lainnya.

Scaling Feature

Dalam tahapan preprocessing data, kita akan menerapkan StandardScaler untuk melakuka normalisasi pada data pada scaled_col

Building Model

Confusion Matrix Function

Definisikan fungsi untuk membuat confusion matrix

Using Cross Validation

Dalam membandingkan performance dari beberapa algoritma machine learning yang akan diuji, kita akan menggunakan metric F1 Score Micro. Adapun asalan digunakan F1 Score sebagai metric adalah kita ingin membuat suatu model machine learning yang dapat memaksimalkan nilai dari Precision dan Recall yang baik. Metric Precision dan Recall dianggap penting karena nilai FN(False Negative) dan FP(False Positive) adalah faktor penting. Selain itu, metric F1 Score dianggap lebih baik saat bekerja dengan kelas yang tidak seimbang. Untuk Micro sendiri dipilih dikarenakan kita ingin menghitung terlebih dahulu penjumlahan dari semua TP(True Positive), FP(False Positive), dan FN(False Negative) dari semua kelas pada target variabel.

Logistic Regression

Decision Tree

K-Nearest Neighbors

Linear Discriminant Analysis

Naive Bayes

Extreme Gradient Boosting

Random Forest

Fit and Predict Several Algorithm

Logistic Regression

Decision Tree

K-Nearest Neighbors

Linear Discriminant Analysis

Naive Bayes

Extreme Gradient Boosting

Random Forest

Comparing Algorithm

Menggunakan 7 buah algoritma Machine Learning dengan random_state = 0, kita melihat bahwa Random Forest Algorithm dan Extreme Gradient Boosting adalah 2 algoritma yang memberikan nilai F1 Score tertinggi saat diuji di data test (Valudation Data).

Hyperparameter Tuning

Pada bagian sebelumnya, diperoleh 2 buah algoritma yang menghasilkan nilai F1 Score tertinggi yaitu Extreme Gradient Boosting dan Random Forest. Oleh karena itu, kita akan melakukan proses Hyperparameter Tuning pada dua algoritma tersebut. Proses hyperparameter tuning dapat melakukan GridSearchCV atau RandomizedCV. Pada permasalahan kali ini, kita akan menggunakan RandomizedCV.

RandomizedCV

Extreme Gradient Boosting Parameter Tuning

Random Forest Parameter Tuning

Build Model with Parameter Tuning

Extreme Gradient Boosting

Random Forest

Feature Importance of Both Model

Extreme Gradient Boosting

Menggunakan Extreme Gradient Boosting, diperoleh 10 feature terpenting dalam model yaitu geo_level_3_id, geo_level_2_id, area_percentage, age, geo_level_1_id, height_percentage, count_families, count_floors_pre_eq, has_superstructure_timber, position_t.

Random Forest

Menggunakan Random Forest, diperoleh 10 feature terpenting dalam model yaitu geo_level_1_id, geo_level_2_id, geo_level_3_id``area_percentage, age, foundation_type_r, height_percentage, count_families, has_superstructure_mud_mortar_stone, count_floors_pre_eq.

Final Model

Setelah dilakukan proses parameter tuning untuk Extreme Gradient Boosting dan Random Forest, diperoleh nilai F1 score untuk kedua model pada training data dan validation data. Terlihat untuk model pada Extreme Gradient Boosting lebih stabil karena nilai F1 score pada training data dan validation data berada di rentang 79.4% dan 73.5%. Sementara pada model Random Forest, nilai F1 score pada training data adalah 89.9% dan 73.5% pada validation data. Sehingga pada model akhir, kita akan menggunakan Extreme Gradient Boosting untuk memprediksi test data.

Predict Unseen Data

Conclusion

Berdasarkan proses yang telah dilakukan, dapat diperoleh beberapa kesimpulan yang dapat menajwab permasalahan sebelumnya. Kesimpulan ini diharapkan dapat menjawab permasalahan yang telah didefinisikan sebelumnya.

  1. Mendapatkan gambaran bagaimana kerusakan yang ada pada bangunan yang ada di Nepal
    Jawab :
    Setelah melakukan proses Exploratory Data Analysis, diperoleh rata-rata tingkat kerusakan yang ada sebesar 2,238272 yang menyatakan bangunan mengalami tingkat kerusakan menengah. Adapun lengkapnya adalah sebanyak 148259 bangunan mengalami tingkat kerusakan menengah, 87218 bangunan mengalami tingkat kerusakan tinggi, dan 25124 bangunan mengalami tingkat kerusakan rendah. Terlihat bahwa jumlah bangunan dengan tingkat kerusakan mengengah adalah yang paling banyak yaitu sebesar 56.89% diikuti oleh bangunan dengan tingkat kerusakan tinggi sebesar 33.47% dan terakhir bangunan dengan tingkat kerusakan rendah sebesar 9.64%. Tingkatan level geografis yang semakin tinggi antara geo_level_1_id, geo_level_2_id, dan geo_level_3_id memberikan informasi bahwa semakin tinggi level geografis, tingkat kerusakan semakin sama.

  2. Memberikan rekomendasi berupa material atau karakteristik spesifik yang dapat digunakan dalam membangun suatu bangunan untuk mengurangi dampak kerusakan yang ditimbulkan dari gempa bumi.
    Jawab :
    Diperoleh rekomendasi bangunan yang dinilai dapat meminimalisir dampak dari gempa bumi sebagai berikut.

    • Bangunan yang menggunakan superstruktur Reinforce Concrete Engineered atau Cement Mortar Brick
    • Bangunan dengan jumlah lantai sebanyak 1 atau 3
    • Bangunan dengan tinggi ternormalisasi kurang dari 3 meter atau lebih dari 9 meter
    • Bangunan dengan luas ternormalisasi kurang dari 4 meter persegi atau lebih dari 10 meter persegi.
  3. Memprediksi level kerusakan bangunan yang terkena dampak gempa bumi Nepal 2015.
    Jawab :
    Proses prediksi tingkat kerusakan yang disebabkan oleh gempa Nepal 2015 terhadap bangunan dapat kita prediksi menggunakan algoritma Machine Learning. Model dengan nilai F1 Score tertinggi dalam memprediksi tingkat kerusakan akibat gempa bumi terhadap bangunan adalah model algoritma Extreme Gradient Boosting menggunakan XGBClassifier dengan memasukkan parameter n_estimators=150 dan max_depth=10. Menggunakan model ini diperoleh nilai F1 Score sebesar 73,56%. Menggunakan model ini, dapat dilihat bahwa 10 feature terpenting dalam model yaitu geo_level_3_id, geo_level_2_id, area_percentage, age, geo_level_1_id, height_percentage, count_families, count_floors_pre_eq, has_superstructure_timber, position_t. Hal ini sesuai dengan keadaan dikarenakan geo_level yang mana adalah wilayah geografis tempat bangunan berada adalah salah satu faktor penting untuk memprediksi tingkat kerusakan bangunan akibat gempa. Untuk wilayah yang berada dengan pusat terjadinya gempa, bangunan yang berada pada wilayah tersebut akan lebih mudah mengalami kerusakan dibandingkan bangunan tidak. area_percentage dan height_percentage yang menyatakan luas dan tinggi bangunan juga merupakan faktor penting untuk memprediksi tingkat kerusakan akibat gempa. Terlihat bahwa age atau umur bangunan juga merupakan faktor penting untuk memprediksi tingkat kerusakan bangunan akibat gempa.